﻿using System;

namespace 流程控制
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 分支语句 if
            // if 语句的最简程序片段 
            // 断言： 判断申明
            /*bool b = false;
            bool if第一种方式
            if (b)
            {
                Console.WriteLine("条件成立，打印");  
            }

            //if第二种方式
            if (b)
            {
                Console.WriteLine("条件成立，打印");
            }
            else
            {
                Console.WriteLine("条件不成立，不打印");
            }
            //if第三种方式
            if (b)
            {
                Console.WriteLine("条件成立，打印1");
            }
            else if(b == false)
            {
                Console.WriteLine("条件不成立，不打印2");
            }
            else if(b == true)
            {
                Console.WriteLine("条件成立，打印3");
            }
            else
            {
                Console.WriteLine("条件不成立，不打印4");
            }
            Console.WriteLine("请输入你们的性别");
             string str=Console.ReadLine();
            if(str == "男")
            {
                Console.WriteLine("欢迎你男孩");
            }
            else if (str == "女")
            {
                Console.WriteLine("欢迎你女孩");
            }
            else if(str == "不是人")
            {
                Console.WriteLine("欢迎你人妖");
            }
            else
            {
                Console.WriteLine("欢迎你");
            }
            Console.WriteLine("请输入你的成绩");
            int number=Convert.ToInt32(Console.ReadLine());
            if(90 < number && number <= 100)
            {
                Console.WriteLine("牛逼");
            }
            else if(70 <= number && number < 89)
            {
                Console.WriteLine("还行");
            }
            else if (60 <= number && number < 69)
            {
                Console.WriteLine("勉强");
            }
            else if(30 <= number && number <59)
            {
                Console.WriteLine("极其差劲");
            }
            else
            {
                Console.WriteLine("没救");
            }
            Console.WriteLine("请输入你的年龄");
            int number =Convert.ToInt32(Console.ReadLine());
            if(0 <= number && number <= 3)
            {
                Console.WriteLine("幼儿");
            }
            else if (4 <=number && number <=12)
            {
                Console.WriteLine("儿童");
            }
            else if(13 <= number && number <= 18)
            {
                Console.WriteLine("青少年");
            }
            else if(19 <= number && number <= 30)
            {
                Console.WriteLine("青年");
            }
            else if(31 <= number && number <= 50)
            {
                Console.WriteLine("中年");
            }
            else if(51<= number && number <= 100)
            {
                Console.WriteLine("老年人");
            }*/
            #endregion

            #region Switch
            //test ：测试 
            // 怎么输入： sw + Tab * 2
            // switch : 切换  switcher 开关
            // case ：情况, 我们常说的分情况讨论的这个 “情况” , "如果是"
            // break : 打断，打断当前逻辑
            // default: 默认值 ，默认情况下，当前逻辑中，name 的值找不到匹配的情况

            // switch switch switch switch switch switch switch switch switch switch switch switch switch
            //switch switch switch switch switch switch switch switch switch switch switch switch switch
            // 语句case case case case case case case case case case case case case case case case case case 
            // 语句终止break break break break break break break break break break break break break break break
            // 语句结尾default default default default default default default default default default default
            //switch switch switch switch switch switch switch switch switch switch switch switch switch 
            //case csae csae csae case case case case case case case case case case case csae 
            //break break break break break break break break break break break break break 
            //default default default default default default default default default default 
            /*Console.WriteLine("请输入你喜欢的国家");
            string contry = Console.ReadLine();
            switch (contry)
            {
                case "中国":
                    Console.WriteLine("五千年文明欢迎您的到来！");
                    break;
                case "美国":
                    Console.WriteLine("美利坚欢迎您的到来！");
                    break;
                case "巴基斯坦":
                    Console.WriteLine("中国的好兄弟");
                    break;
                default:
                    Console.WriteLine("其他国家");
                    break;
            }
            Console.WriteLine("请输入您的会员等级");
            int vnumber = Convert.ToInt32(Console.ReadLine());
            switch (vnumber)
            {
                case 1:
                    Console.WriteLine("普通会员");
                    break;
                case 2:
                    Console.WriteLine("中等会员");
                    break;
                case 3:
                    Console.WriteLine("高级会员");
                    break;
                case 4:
                    Console.WriteLine("顶级会员");
                    break;
                default:
                    Console.WriteLine("您不是会员");
                    break;
            }
            int number = 1000;
            Console.WriteLine("请输入你的理财级别");
            string str = Console.ReadLine();
            switch (str)
            {
                case "a":
                    Console.WriteLine("您的收益是：{0}",number +0.001*number );
                    break;
                case "b":
                    Console.WriteLine("您的收益是：{0}",number +0.002*number);
                    break;
            }
            //三元运算符 
            //关系表达式的结果=判断式的结果（bool真假）？真 ：假
            bool resulr;
            resulr = 10 < 3 ? true : false;
            int a1 = 10;
            int b1 = 20;
            int number = a1 + b1 > 100 ? 200 : 300;
            Console.WriteLine(number);
            if (10 > 3)
            {
                resulr = true;
            }
            else
            {
                resulr = false;
            }*/



            #endregion

            #region 循环语句
            // while :  当----的时候 
            // 下面这个最简逻辑解释为： 当 小括号内断言 为真 的时候进入 花括号内的 代码块
            // 断言一直成立形成死循环 。断言状态翻转退出死循环
            // while 循环可加入中断逻辑，退出死循环
            //break 中断，退出
            //while while while while while while while while while while while while while
            //while while while while while while while while while while while while while 
            /*int b = 0;
            bool b1 = true;
            while (b1)
            {
                Console.WriteLine("欢迎光临");
                b++;
                if (b == 5)
                {
                    b1 = false;
                }
                else
                {
                    Console.WriteLine("还没到达5次");
                }
            }
            //练习一
            bool search = true;
            int number = 0;
            string str;
            while(search)
            {
                Console.WriteLine("请输入查询的分数限制一百以内");
                 str = Console.ReadLine();
                number = Convert.ToInt32(str)/10;
                if (number <= 10 && number >= 0)
                {
                    switch (number)
                    {
                        case 10:
                            Console.WriteLine("满分");
                            break;
                        case 9:
                            Console.WriteLine("优秀");
                            break;
                        case 8:
                            Console.WriteLine("良好");
                            break;
                        case 7:
                            Console.WriteLine("普通");
                            break;
                        case 6:
                            Console.WriteLine("及格");
                            break;
                        default:
                            Console.WriteLine("差");
                            break;

                    }
                }
                else
                {
                    Console.WriteLine("输入错误");
                }
            }*/
            //do while 循环
            //do while do while do while do while do while do while do while do while 
            //do while do while do while do while do while do while do while do while 
            /*
             * //count 计数（动词），记了多少数（名词）
             * do + tab*2 得到最简dowhile 代码块
            // do : 做 ，干
            // while :当 ... 的时候
            bool result =true;
            int number;
            //对 while 里面的断言不管，先执行一次
            do
            {
                Console.WriteLine("请输入你的分数");
               number=Convert.ToInt32(Console.ReadLine());
                if (0 <= number  && number <=100)
                {
                    switch (number/10)
                    {
                        case 10:
                            Console.WriteLine("满分");
                            break;
                        case 9:
                            Console.WriteLine("优秀");
                            break;
                        case 8:
                            Console.WriteLine("良好");
                            break;
                        case 7:
                            Console.WriteLine("普通");
                            break;
                        case 6:
                            Console.WriteLine("及格");
                            break;
                        default:
                            Console.WriteLine("差");
                            break;

                    }
                }
                else
                {
                    Console.WriteLine("错误请重新输入");
                }
            } while (result);
            //for循环
            // for + tab*2 
            // 有三个 内嵌的逻辑语句
            // int j = 0; 声明变量并赋值的语句 ，声明一个变量 i ， 这个语句只执行一次
            // j<10 ; 关系判定的语句 ，判定 i 是否小于 10  ,这个语句每次需要过来做一个判定
            // j++ ; 自增 ，对 i 进行自增，使其发生变化 不变则形成死循环 ，每次过来做一个自增
            //for for for for for for for for for for for for for for for 
             for(int i = 0; i < 10; i++)
            {
                Console.WriteLine("当前打印的是："+ i);
            }
            for (int i = 10; i >= 0; i--)
            {
                Console.WriteLine("当前打印的是："+i);
            }
            //for循环的两种写法
            //第一种
            int j;
            for (j = 0; j < 10; j++)
            {
                Console.WriteLine("当前打印的是："+j);
            }
            //第二种
            for (int i = 0; i < 10; i++)
                Console.WriteLine("-----"+i);*/

            /*练习一 使用for循环计算100以内偶数的和
            int sum = 0;
            for (int i = 0; i < 100; i++)
            {
             if(i % 2 == 0)
                {
                    sum += i;
                    Console.WriteLine("偶数是"+i);
                }
            }
            //练习二 使用for循环遍历10以内的数， 如果遍历到6，就退出循环
            for (int i = 0; i <= 10; i++)
            {
                Console.WriteLine("当前的输出循环是"+i); 
                if (i == 6)
                {
                    Console.WriteLine("i == 6了");
                    break;
                }
            }
            int[] numbers = { 10, 11, 20, 12, 99, };
            string[] strs = { "A", "耀耀", "张馨予" };

            //foreach 是用来遍历集合或者数组的
            //foreach  遍历一个集合
            // 遍历 ：一个一个（挨个）的浏览、查阅、查看
            // fore +tab*2
            // 遍历 arr 字段的每一个子项，arr 是集合 ：数组 或者 List 等等
            //  var 弱类型，可以指带任意的对象类型. 在此处尽量少些（Unity 里面 Transform 类型不能用 var）
            // in : 在里面 
            // item : 每一个子项，item 可以自定义 约定：不可以修改item项
            //var 是一个泛型，泛指一切类型。
            foreach foreach foreach foreach foreach foreach foreach foreach foreach foreach 
            (var item in) (var item in) (var item in) (var irem in) (var irem in) (var irem in)
            foreach (var item in strs)
            {
                Console.WriteLine(item);
            }*/

            #endregion

            #region 跳转语句
            /*不提倡使用goto语句，会导致系统紊乱。
            goto leichao;
            Console.WriteLine("广告时刻");
            leichao:
            Console.WriteLine("要问技术哪家强");
            Console.WriteLine("中国深圳找耀耀");*/

            //continue 语句用来退出当前循环，然后在循环的下一次迭代开始执行命令
            //dreak 语句用来退出循环
            //continue continue continue continue continue continue continue continue continue 

            for (int i = 0; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("{0}X{1}={2}\t",i,j,j*i) ;
                }
                Console.WriteLine();

            }



            #endregion

            #region 异常捕获 
            // 我们在程序的运行当中经常出现各种各样的异常现象，你如果想让你的程序坚强一些。
            //在你的程序当中应该经常性的使用try—catch来进行异常捕获。
            //哪行代码容易出现异常你就try一脚
            //try try try try try try try try try try try try try try try 
            //catch catch catch catch catch catch catch catch catch catch 
            //tey catch try catch tey catch try catch try catcg try catch try catch try catch try catch try chtch
            //try
            //{
            //可能出现异常的代码
            //}
            //catch
            //{
            //出现异常后要执行的代码
            //}
            //执行代码过程：如果try中没有出现异常，那么catch中的代码就不会执行。
            //如果try的代码出现异常哪怕出现异常代码后面还有一百行代码都不会执行，而是会直接跳到catch中执行.
            //变量的作用域
            //变量的作用域就是你能使用的这个变量的范围
            //变量的作用域是从声明他的那个括号开始到括号对应的括号结束。在这个范围内，我们可以访问到，超出这个范围就访问不到了。
            //例子
            Console.WriteLine("请输入一个数字");
            int a = 0;
            bool b = true;
            try
            {
                a = Convert.ToInt32(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("输入错误请输入数字");
                b = false;
            }
            if (b == true)
            {
                Console.WriteLine(a * 2);
            }
            #endregion
            Console.ReadKey();
        }
    }
}
